﻿/**
  NELMATE   ELMATEC   LM      EL  TECONELMA  CO         NE          MA   ONELMAT    ELMATECO  LMATECONE 
 ON        NE     CO  LMA     EL  TE         CO         NEL        LMA  CO      EC     AT     LM       
CO         NE     CO  LMAT    EL  TE         CO         NELM      ELMA  CO      EC     AT     LM
CO         NE     CO  LM TE   EL  TECONELM   CO         NE MA    NE MA  CONELMATEC     AT     LMATECONE
CO         KC     CO  LM  EC  EL  TE         CO         NE  AT  ON  MA  CO      EC     AT     LM
 ON        KC     CO  LM   CO EL  TE         CO         NE   TECO   MA  CO      EC     AT     LM
  NELMATE   ELMATEC   LM    ONEL  TECONELMA  CONELMATE  NE    EC    MA  CO      EC     AT     LMATECONE
_______________________________________________________________________________________________________
 ConelMate Framework 3.0 - copyright 2007(c) Ruben Sainz de la Maza
 
	@class: 	AbstractProxyClient
	@vertion: 	1.0
	@date:		26/02/08
				
	@language: 	ActionScript 3.0
	@author:	Ruben Sainz de la Maza
			
**/


package com.conelmate.nc
{
	
	import com.conelmate.util.Trace;
	import com.conelmate.nc.ProxyClient;	
	import flash.net.Responder;

	public class AbstractProxyClient extends Trace
	{			
				protected  	var _CLASS			:String = "";	//clase a la que pertenece	
				protected	var	_objProxyClient	:ProxyClient;	//clase que hace de nexo entre el servidor y el cliente
				protected	var _responder		:Responder;		//objeto que captura la respuesta del servidor
				
			
//_________________________________________________________________________________ Public Methods		
		
		/**
		 * inicializar
		 */		
		public function initializeProxy(strClassName:String):void
		{
			if(strClassName) _CLASS = strClassName;
			
			mTrace("#" + _CLASS + "# initializeProxy");

			_objProxyClient = ProxyClient.getInstance();		//capturar las llamadas a metodos desde el server al cliente
			_objProxyClient.addClientListener(this, _CLASS);	//registrar la referencia			
			_responder = new Responder(onBack, onFault);		//derivar respuestas, si resuelve va a onBack, si da error va a onFault
		}
		
		
		/**
		 * finalizar
		 */		
		public function finalizeProxy():void
		{
			_objProxyClient.removeClientListener(_CLASS);
		}

//_________________________________________________________________________________ onResult

		/**
		 * al volver resultados desde el server luego de una llamada
		 * override en la subclase
		 */		
		public function onBack(o:Object):void
		{
			//OVERRIDE
			for(var i in o) mTrace("#" + _CLASS + "PROXY# "+i+" "+o[i]);
		}
		
		
		/**
		 * al producirse un error en una llamada al server
		 */		
		private function onFault(o:Object):void
		{
			throw new Error("Error en llamada al server");
		}

	}
}

